home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Purity / Purity #21 (1994-01-12)(Diesel)(DE)[WB].zip / Purity #21 (1994-01-12)(Diesel)(DE)[WB].adf / PCQ-Dokus / KurzReferenzPCQ next >
Text File  |  1993-12-13  |  20KB  |  704 lines

  1.  
  2.  
  3.   *******************************************************************
  4.  
  5.                        KURZREFERENZ FÜR PCQ-PASCAL
  6.  
  7.   *******************************************************************
  8.  
  9.  
  10.  
  11.   Was nun folgt, ist eine Mischung aus Übersetzung der englischen
  12.   Anleitung zu PCQ und einer allgemeinen Erklärung der Sprache Pascal.
  13.   Sie soll Einsteigern helfen, schneller mit der Sprache klarzukommen,
  14.   erhebt aber keinen Anspruch auf Richtigkeit und Vollständigkeit.
  15.   Mehr und bessere Informationen entnimmt man immer noch der Original-
  16.   anleitung von Patrick Quaid, dem Programmierer von PCQ. Für diese
  17.   deutsche Kurzreferenz gelten dieselben Copyrightbestimmung wie für
  18.   die Originalanleitung des PCQ-Compilers 1.2b.
  19.  
  20.                                         Andreas Neumann , 06.08.1992
  21.  
  22.  
  23.  
  24.   ===================================================================
  25.  
  26.                        Programmstruktur in Pascal
  27.  
  28.   ===================================================================
  29.  
  30.  
  31. Die normale Struktur von Pascalprogrammen sieht wie folgt aus :
  32.  
  33.                             Programm
  34.                                 |
  35.     -----------------------------------------------------
  36.     |                                                   |
  37.  Programmkopf                                         Block
  38.                                                         |
  39.                                         -----------------------------
  40.                                         |                           |
  41.                              Vereinbarungsteil                Anweisungsteil
  42.  
  43. Der Programmkopf besteht aus dem reservierten Wort "PROGRAM" und dem Namen
  44. des Programms, abgeschlossen durch ein Semikolon.
  45.  
  46. Beispiel :
  47.  
  48. PROGRAM EinProgramm;
  49.  
  50. Im Vereinbarungsteil werden Variablen und Konstanten deklariert, wobei
  51. die Konstantendeklaration mit dem reservierten Wort "CONST" und die
  52. Variablendeklaration mit dem Wort "VAR" eingeleitet wird.
  53.  
  54. Beispiel :
  55.  
  56. CONST
  57.         Zehn = 10;
  58.  
  59. VAR
  60.         EinString : String;
  61.  
  62.  
  63. Der Anweisungsteil besteht aus den Anweisungsbefehlen, dem eigentlichen
  64. Programm also.
  65. Eingerahmt wird er von den reservierten Wörtern "BEGIN" und "END.".
  66.  
  67. Beispiel (leere Anweisungsblock) :
  68.  
  69. BEGIN
  70. END.
  71.  
  72.  
  73.   ===================================================================
  74.  
  75.                           Typendeklarationen
  76.  
  77.   ===================================================================
  78.  
  79. Folgende Definitionen scheinen auf den ersten Blick unverständlich,
  80. erweisen sich bei näherer Betrachtung jedoch als einleuchtend. So
  81. beginnen sie sehr allgemein und werden dann Stück für Stück näher definiert.
  82.  
  83.  
  84. <Typendefintion>     ::= Type <Typendefinitionen>;
  85.  
  86. <Typendefinitionen>  ::= <Typendefinition>; <Typendefinitionen> |
  87.                          <Typendefinition>
  88.  
  89. <Typendefinition>    ::= <Bezeichner> = <Typensepzifikation>
  90.  
  91. <Typenspezifikation> ::= <Bezeichner>                      |
  92.                          <Bereich>                         |
  93.                          ^<Typenspezifikation>             |
  94.                          (<Bezeichnerliste>)               |
  95.                          <Felddefinition>                  |
  96.                          <Verbunddefinition>               |
  97.                          file of <Typenspezifikation>
  98.  
  99. <Bereich> ::= <Konstanter Ausdruck> .. <Konstanter Ausdruck>
  100.  
  101. <Felddefinition> ::= array [<Bereich>] of <Typenspezifikation> |
  102.                        array <Bezeichner> of <Typenspezifikation>
  103.  
  104. <Verbunddefinition> ::= record <Variable Definitionen> end
  105.  
  106.  
  107.                          Numerische Typen
  108.                         -------------------
  109.  
  110. Byte      Länge            : 1 Byte
  111.           Speichervermögen : 0 - 255 (ganzzahlig)
  112.  
  113. Short     Länge            : 2 Byte
  114.           Speichervermögen : -32768 - 32767 (ganzzahlig)
  115.  
  116. Integer   Länge            : 4 Byte
  117.           Speichervermögen : ca. -2 billion - 2 billion (ganzzahlig)
  118.  
  119. Real      Länge            : 4 Byte
  120.           Speichervermögen : 10 * 10^18 - ca 5 * 10^-20, sowohl positiv
  121.                              als auch negativ. ( 5 * 10^-20 entspricht
  122.                              etwa 0.00000000000000000005)
  123.                              Man sollte aber nur auf 5 oder
  124.                              6 Nachkommastellen zurückgreifen.
  125.  
  126.  
  127.                        Andere Ordinale Typen
  128.                      -------------------------
  129.  
  130. Char      Länge            : 1 Byte
  131.           Speichervermögen : ein ASCII-Zeichen (z.B. 'a')
  132.  
  133. Boolean   Länge            : 1 Byte
  134.           Speichervermögen : -1 und 0, bzw. TRUE und FALSE
  135.  
  136.  
  137.                            Zeigertypen
  138.                          ----------------
  139.  
  140. Address   Länge            : 4 Byte
  141.           Kompatibel zu allen anderen Zeigertypen.
  142.  
  143. String    Länge            : 4 Byte
  144.           Der String ist in PCQ als Zeiger auf Chars definiert.
  145.  
  146.  
  147.                              File Typen
  148.                            --------------
  149.  
  150. Text        Ein Text-File ist ein normales ASCII-File.
  151.  
  152. Typed Files Ein bestimmtes File, deklariert als "File of Type",
  153.             beinhaltet nur Werte des gegebenen Typs.
  154.  
  155.  
  156.  
  157.   ===================================================================
  158.  
  159.                           Vorbestimmte Konstanten
  160.  
  161.   ===================================================================
  162.  
  163.  
  164. False    Gehört zum Typ Boolean und enthält den Wert 0.
  165.  
  166. MaxInt   MaxInt kennzeichnet den größtmöglichen Integerwert, 2.147.483.647
  167.          oder $7FFFFFFF als Hexadezimalzahl.
  168.  
  169. MaxShort MaxShort ist der größte Wert für Short-Variablen, nämlich
  170.          32.767 oder $7FFF.
  171.  
  172. Nil      Nil ist eine konstante Adresse, nämlich eine Adresse des Wertes 0.
  173.  
  174. True     Gehört zum Typ Boolean und enthält den Wert -1.
  175.  
  176.  
  177.   ===================================================================
  178.  
  179.                       Vorbestimmte Variablen
  180.  
  181.   ===================================================================
  182.  
  183.  
  184. CommandLine     Eine Stringvariable, die zu der Kommandozeile zeigt,
  185.                 die der User eingegeben hat (wobei der Name
  186.                 des Programms abgeschnitten ist). Sollte das
  187.                 Programm von der Workbench gestartet worden sein, so
  188.                 ist dieser Wert nicht definiert.
  189.  
  190. ExitAddr        ExitAddr bestimmt den Ort innerhalb des Programmes, an
  191.                 dem ein "Runtime Error" (Fehler während des Programm-
  192.                 ablaufs) auftrat.
  193.  
  194. ExitCode        Diese Variable wird an AmigaDOS zurückgegeben, wenn das
  195.                 Programm beendet wird.
  196.  
  197. ExitProc        Adresse der ersten Prozedur, die bei Beendigung des
  198.                 Programmes ausgeführt wird.
  199.  
  200. HeapError       Adresse einer Funktion, die aufgerufen wird, wenn
  201.                 New() oderr AllocString() keinen Speicher belegen können.
  202.  
  203. Input           Eine Varaible vom Typ Textfile, die auf den
  204.                 Standardinput-Kanal zeigt.
  205.  
  206. Output          Dasselbe, nur auf den Ausgabekanal bezogen.
  207.  
  208.  
  209.   ===================================================================
  210.  
  211.                       Standardprozeduren
  212.  
  213.   ===================================================================
  214.  
  215.  
  216.                Close (FileVariable : Irgendein Filetyp)
  217.  
  218. Das File, das durch FileVariable repräsentiert wird, wird geschlossen.
  219.  
  220.  
  221.    Dec (V : Irgendein Ordinaler Typ oder Zeiger) oder
  222.    Dec (V, Anzahl : Integer)
  223.  
  224. Dec (=decrement) zieht eins (oder mehr) von einer Variablen ab.
  225. Dec (x,n) ist daselbe wie x:=x-n, nur etwas effizienter. Gibt man
  226. keine Anzahl an, dann wird dafür 1 angenommen. Bei Zeigern ist die
  227. Dec-Routine mit etwas Vorsicht zu geniessen, da sie die abzuziehende
  228. Anzahl mit der Größe der Variable, auf die der Zeiger weist, multipliziert.
  229.  
  230.  
  231.                   Dispose (Variable : ^Irgendwas)
  232.  
  233. Gibt durch "New" belegten Speicher frei.
  234.  
  235.  
  236.                 Exit oder
  237.                 Exit (ReturnCode : Integer)
  238.  
  239. Beendet das Programm.
  240.  
  241.  
  242.                Get (var FileVariable : Ein Filetyp)
  243.  
  244. Bewegt den Filezeiger auf das nächste Element des Files, ohne etwas
  245. einzulesen.
  246.  
  247.  
  248.           Inc (VarReference : Ordinal-Typ oder Zeiger) oder
  249.           Inc (VarReference : Ordinal-Typ oder Zeiger, Menge : Integer)
  250.  
  251. Dasselbe wie Dec, nur wird hier dazugezählt und nicht abgezogen.
  252.  
  253.  
  254.                    New (ZeigerVar : ^Irgendwas)
  255.  
  256. Belegt einen Speicherbereich, der der Größe des Typs, auf den ZeigerVar
  257. zeigt, entspricht.
  258.  
  259.  
  260.                Put (var FileVariable : Ein Filetyp)
  261.  
  262. Bewegt den Filezeiger hinter das momentane Element im File, wobei, falls
  263. nötig, das aktuelle Element gespeichert wird.
  264.  
  265.  
  266.  Read (var FileVariable :  Text oder File, Variablen....)
  267.  
  268. Liest Informationen eines AmigaDOS-Files. FileVariable ist optional. Die
  269. Procedure Read kann eine variable Anzahl von Argumenten verarbeiten.
  270.  
  271.  
  272.      Readln (var FileVariable : Text, Variablen....)
  273.  
  274. Ähnlich wie Read, aber nur auf Textfiles anzuwenden, da es bis zum Beginn
  275. einer neuen Zeile liest. Wird normalerweise für einfach Eingaben im
  276. CLI verwendet.
  277. Z.B. :
  278. READLN (name); oder
  279. READLN (zahl1 , zahl2);
  280.  
  281.  
  282.                Reset (var FileVar : File oder Text;
  283.                         FileName : String;
  284.                         BufferGröße : Integer);
  285.  
  286. Öffnet ein File um zu lesen. Der BufferGröße-Parameter ist optional.
  287.  
  288.  
  289.              Rewrite (var FileVar : File oder Text;
  290.                           FileName : String;
  291.                           BufferGröße : Integer);
  292.  
  293. Öffnet ein File zur Ausgabe, wobei ein existierendes File dieses Namens
  294. gelöscht wird. Das BufferGröße-Element ist optional.
  295.  
  296.  
  297.                      Trap (TrapNum : Integer)
  298.  
  299. Kann als automatischer Stoppunkt für manche Debugger verwendet werden.
  300.  
  301.  
  302.        Write (FileVariable : Text oder File, Ausdrücke...)
  303.  
  304. Write schreibt Informationen in ein AmigaDOS-File. FileVariable ist optional
  305. und die Anzahl der Ausdrücke beliebig.
  306.  
  307.  
  308.           Writeln (FileVariable : Text, Ausdrücke....)
  309.  
  310. Ähnlich Write, setzt nach Ausgabe sämtlicher Ausdrücke ein Zeichen, das das
  311. Ende der Linie kennzeichnet. Wird zur normalen Ausgabe ins CLI benutzt.
  312. Beispiel :
  313. WRITELN ('Hallo !');
  314. WRITELN ('1 + 2 = ',1+2);
  315.  
  316.  
  317.   ===================================================================
  318.  
  319.                       Standardfunktionen
  320.  
  321.   ===================================================================
  322.  
  323.  
  324.                 Adr(Variable) : Address
  325.  
  326. Liefert die aktuelle Speicheradresse des Parameters zurück.
  327.  
  328.  
  329.            Abs(Zahlenausdruck) : entsprechender numerischer Typ
  330.  
  331. Liefert den Betrag. Abs(n) liefert n, wenn n positiv ist und -n, wenn es
  332. negativ ist.
  333.  
  334.  
  335.             ArcTan(Zahlenausdruck) : Bogenmaß
  336.  
  337. Liefert den ArcusTangens.
  338.  
  339.  
  340.                   Bit(BitNummer) : Masken-Integer
  341.  
  342. Liefert einen Integer, in dem nur das gewünschte Bit gesetzt ist, entspricht
  343. (1 shl BitNummer).
  344.  
  345.  
  346.                   Chr(Zahlenausdruck) : Char
  347.  
  348. Die Chr()-Funktion erzeugt aus einer als ASCII-Code interpretierten Zahl
  349. das dazugehörige Zeichen.
  350.  
  351.  
  352.                    Ceil(Fließkommeausdruck) : Real
  353.  
  354. Ceil() liefert den kleinsten ganzzahligen Wert größer oder gleich dem
  355. übergebenen Ausdruck.
  356.  
  357.  
  358.             Cos(Zahlenausdruck im Bogenmaß) : Real
  359.  
  360. Kosinus-Funktion.
  361.  
  362.  
  363.                EOF(File oder Textvariable) : Boolean
  364.  
  365. EOF liefert True wenn das File zu Ende gelesen wurde, ansonsten False.
  366.  
  367.  
  368.                    Exp(Zahlenausdruck) : Real
  369.  
  370. Exp(x) liefert e^x, wobei e - für alle die's vergessen haben - ungefähr
  371. 2.71828....
  372.  
  373.  
  374.                  Float(Integer - Ausdruck) : Real
  375.  
  376. Die Float - Funktion konvertiert einen Integer in einen Fließkomma-Ausdruck.
  377.  
  378.  
  379.                   Floor(Real - Ausdruck) : Real
  380.  
  381. Floor liefert die größte ganze Zahl kleiner oder gleich dem übergebenen
  382. Parameter.
  383.  
  384.  
  385.                         IOResult : Integer
  386.  
  387. IOResult überprüft, ob irgendwelche Fehler seit dem letzten Aufruf,
  388. auftraten. Normalerweise fügt PCQ-Pascal Befehle ein, die das automatisch
  389. überprüfen, aber wenn man die IO-Überprüfung (mit der {$I-} - Anweisung)
  390. ausgeschaltet hat, muß man es selbst übernehmen.
  391.  
  392.  
  393.                   Ln(Zahlenausdruck) : Real
  394.  
  395. Ln liefert den natürlich Logarithmus (den Logarithmus zur Basis e)
  396. des Parameters.
  397.  
  398.  
  399.                  Odd(Zahlenausdruck) : Boolean
  400.  
  401. Odd liefert TRUE, wenn das Argument ungerade ist, ansonsten FALSE.
  402.  
  403.  
  404.                Open(fname       : String;
  405.                     var fvar    : file oder Text;
  406.                     BufferGröße : Integer) : Boolean;
  407.  
  408. Open ist die Function-Form der Rewrite-Procedure.  Öffnet ein File zum
  409. Schreiben und löscht dabei jedes existierende File selben Namens. Wenn alles
  410. glatt geht, liefert Open True, wenn nicht, dann False. BufferGröße ist
  411. optional, muß also nicht angegeben werden.
  412.  
  413.  
  414.                 Ord(Ordinaler Ausdruck) : Integer
  415.  
  416. Liefert den Integer-Wert des Parameters. Es kann z.B. Booleans und Chars
  417. (hier den ASCII-Code) umwandeln.
  418.  
  419.  
  420.                Pred(Ordinaler Ausdruck) : selber Typ
  421.  
  422. Pred liefert der nächstkleineren Wert des übergebenen Parameters.
  423. Z.B. ist Pred(2) = 1.
  424.  
  425.  
  426.              ReOpen(fname       : String;
  427.                     var fvar    : file or text;
  428.                     BufferGröße : Integer) : Boolean
  429.  
  430. ReOpen ist die Function-Form von Reset. Öffnet ein File zum Lesen
  431. und liefert True, wenn alles funktionierte, ansonsten False.
  432. BufferGröße ist wieder optional.
  433.  
  434.  
  435.                  Round(Real-Ausdruck) : Integer
  436.  
  437. Round rundet einen Real-Ausdruck zum nächsten Integerausdruck.
  438.  
  439.  
  440.             Sin(Zahlenausdruck im Bogenmaß) : Real
  441.  
  442. Liefert den Sinus.
  443.  
  444.  
  445.                 SizeOf(Typenbezeichner) : Integer
  446.  
  447. SizeOf liefert die Größe des angegebenen Typs.
  448.  
  449.  
  450.                Sqr(Zahlenausdruck) : selber Typ
  451.  
  452. Sqr(x)=x*x
  453.  
  454.  
  455.                  Sqrt(Zahlenausdruck) : Real
  456.  
  457. Sqrt(x) liefert die Quadratwurzel von x.
  458.  
  459.  
  460.                Succ(Ordinaler Ausdruck) : selber Typ
  461.  
  462. Succ liefert den nächstgrößten Wert desselben Typs.
  463.  
  464.  
  465.             Tan(Zahlenausdruck im Bogenmaß) : Real
  466.  
  467. Liefert den Tangens.
  468.  
  469.  
  470.                  Trunc(Real-Ausdruck) : Integer
  471.  
  472. Trunc liefert den ganzzahligen Anteil einer Fließkommazahl.
  473.  
  474.  
  475.   ===================================================================
  476.  
  477.                              Operatoren
  478.  
  479.   ===================================================================
  480.  
  481. Operatoren, die sich auf einen Wert beziehen :
  482.  
  483.         @   = Adr( )
  484.         -   Negiert den Wert.
  485.         +   Hat keine Auswirkung, z.B. +3 = 3.
  486.        not  Boolean oder bitweise Verneinung.  Wenn der Wert ein
  487.             Boolean-Wert ist, liefert dieser Operator das Gegenteil.
  488.             Wenn er einen ganzzahliger Wert ist, dann liefert er
  489.             das bitweise Gegenstück.
  490.  
  491. Operatoren, die sich auf zwei Werte beziehen :
  492.  
  493.         *   Multiplikation
  494.         /   Fließkommadivision
  495.        div  Ganzzahlige Division
  496.        mod  Liefert den ganzzahligen Rest einer ganzzahligen Division.
  497.             So ist z.B. 10 MOD 3 = 1, da 10 DIV 3 = 3 ist und der Rest 1
  498.             beträgt.
  499.        and  Logische Und-Funktion.
  500.        shl  Shift left = Schiebe nach links.  Verschiebt die Bits des linken
  501.             Arguments um so viele Stellen nach links, wie im rechten
  502.             Operanden angegeben.
  503.        shr  Shift right. Wie shl, nur werden die Bits nach rechts
  504.             verschoben.
  505.         +   Addition
  506.         -   Subtraktion
  507.         or  Logisches Oder
  508.        xor  Exklusives Oder
  509.  
  510. Ausdrücke, die Booleansche Werte zurückgeben :
  511.  
  512.         =   TRUE, wenn linker und rechter Operand gleich
  513.         <>  TRUE, wenn linker und rechter Operand ungleich
  514.         >   TRUE, wenn linker Operand größer als rechter
  515.         <   TRUE, wenn linker Operand kleiner als rechter
  516.         >=  TRUE, wenn linker Operand größer oder gleich rechter
  517.         <=  TRUE, wenn linker Operand kleiner oder gleich rechter
  518.  
  519.  
  520.   ===================================================================
  521.  
  522.                             Statements
  523.  
  524.   ===================================================================
  525.  
  526. <Statement>   ::= <If Statement>         |
  527.                   <While Statement>      |
  528.                   <Repeat Statement>     |
  529.                   <For Statement>        |
  530.                   <Case Statement>       |
  531.                   <With Statement>       |
  532.                   <Compound Statement>   |
  533.                   <Assignment Statement> |
  534.                   <Procedure Call>       |
  535.                   <Return Statement>     |
  536.                   <Goto Statement>
  537.  
  538.  
  539.  If Statements
  540. ---------------
  541.  
  542. <If Statement> ::= if <Boolean Ausdruck> then <Statement> |
  543.                    if <Boolean Ausdruck> then <Statement>
  544.                                          else <Statement>
  545.  
  546.  
  547.  While Statements
  548. ------------------
  549.  
  550. <While Statement> ::= while <Boolean Ausdruck> do <Statement>
  551.  
  552.  
  553.  Repeat Statements
  554. -------------------
  555.  
  556. <Repeat Statement> ::= repeat <Statements> until <Boolean Ausdruck>
  557.  
  558. <Statements> ::= <Statement> | <Statement> ; <Statements>
  559.  
  560.  
  561.  For Statements
  562. ----------------
  563.  
  564. <For Statement> ::= for <Variable> :=
  565.                         <Ausdruck> <Richtung>
  566.                         <Ausdruck> do <Statement>
  567. <Richtung> ::= to | downto
  568.  
  569.  
  570.  Case Statements
  571. -----------------
  572.  
  573. <Case Statement> ::= case <Ausdruck> of <Alternativen> end |
  574.                      case <Ausdruck> of <Alternativen>
  575.                                        else <Statement> end
  576.  
  577. <Alternativen> ::= <Alternative> | <Alternative> ; <Alternativen>
  578.  
  579. <Alternative> ::= <Fälle> : <Statement>
  580.  
  581. <Fälle> ::= <Fall> | <Fall> , <Fälle>
  582.  
  583. <Fall>  ::= <Konstanter Ausdruck> | <Konstanter Ausdruck> .. <Konstanter
  584.             Ausdruck>
  585.  
  586.  
  587.  With Statements
  588. -----------------
  589.  
  590. <With Statement> ::= with <Ausdrücke> do <Statement>
  591.  
  592. <Ausdrücke> ::= <Ausdruck> | <Ausdruck> , <Ausdrücke>
  593.  
  594.  
  595.  Return Statements
  596. -------------------
  597.  
  598.     <Return Statement> ::= return
  599.  
  600. Es ist nur in Prozeduren erlaubt und erlaubt es ,diese augenblicklich
  601. zu verlassen.
  602.  
  603.  
  604.  Goto Statements
  605. -----------------
  606.  
  607. <Goto Statement> ::= goto <Identifier>
  608.  
  609. Sollte vermieden werden !
  610.  
  611.  
  612. Ein Beispielprogramm für die gebräuchlichsten Statements :
  613.  
  614. PROGRAM Beispiel;
  615.  
  616. VAR i : Integer;
  617.  
  618. BEGIN
  619.  READLN (i);
  620.  
  621.  IF i>10 THEN
  622.   WRITELN ('i > 10')
  623.  ELSE                               { IF - Statement }
  624.   WRITELN (' i<= 10');
  625.  
  626.  WHILE i>0 DO                       { WHILE - Statement }
  627.  BEGIN
  628.   WRITELN ('i ist noch größer als Null !');
  629.   Dec (i);
  630.  END;
  631.  
  632.  REPEAT                             { REPEAT UNTIL - Statement }
  633.   WRITELN ('Zähle wieder einen dazu !');
  634.   Inc (i);
  635.  UNTIL i=10;
  636.  
  637.  FOR i:=2 TO 4 DO                   { FOR - Statement }
  638.   WRITELN ('i =',i);
  639.  
  640.  CASE i OF
  641.   5 : BEGIN WRITE ('Dies ist durch die FOR-Schleife');
  642.             WRITELN (' die einzige mögliche Variante .');
  643.       END;
  644.   7 : WRITELN ('Unmöglich !!!');
  645.   ELSE
  646.   BEGIN
  647.       WRITELN ('Tja, hier gibt\'s auch nichts !');
  648.       WRITELN ('Es könnte aber mal passieren....');
  649.       WRITELN ('Seltsam !!! i = ',i);
  650.   END;
  651.  END;                               { CASE - Statement }
  652.  
  653. END.
  654.  
  655.  
  656.   ===================================================================
  657.  
  658.                              Strings
  659.  
  660.   ===================================================================
  661.  
  662.  
  663. Strings werden in PCQ-Pascal ähnlich wie in C behandelt. Der
  664. String selbst ist nur eine Adresse eines Speicherbereiches, in dem
  665. die einzelnen Chars dann gespeichert sind.
  666.  
  667. Um mit Strings zu arbeiten, muß ein Include-File mit
  668.                {$I "include:Utils/Stringlib.i"}
  669. eingebunden werden. Hier finden sich alle wichtigen Routinen.
  670.  
  671. Um einen String benutzen zu können, muß man erst Speicherplatz für
  672. seinen Inhalt schaffen :
  673.  
  674.         String := AllocString(Größe : Integer);
  675.  
  676. Für den String wird ein Speicherbereich angelegt. Der String darf
  677. also Größe-1 Zeichen lang sein.
  678.  
  679. Um Strings zu belegen, muß man
  680.  
  681.     StrCpy (String,"Text");
  682.  
  683. anwenden. Weiteres zum Thema Strings entnehme man den Anmerkungen
  684. im oben genannten Include-File.
  685.  
  686. Eine Besonderheit der Strings sind die Escape-Sequenzen :
  687.  
  688.            \n   Zeilenvorschub
  689.            \t   Tabulator
  690.            \0   Null
  691.            \b   Backspace
  692.            \e   ESC
  693.            \c   CSI (Control Sequence Introducer)
  694.            \a   Attention
  695.            \f   Form Feed
  696.            \r   Carriage Return
  697.            \v   Vertical Tab
  698.            \\   Einfach EIN Querstrich
  699.            \'   EIN Anführungszeichen
  700.            \"   EIN Gänsefüßchen
  701.  
  702.  
  703.  
  704.